Neste projeto iremos trabalhar 2 funcionalidades ao mesmo tempo...Como ler uma entrada analógica e como enviar dados pela porta serial que podem ser lidos pelo seu computador caso você ligue seu arduino ao seu computador.
Anexei as duas funcionalidades porque que adianta ler a entrada analógica se não tenho onde exibir o valor obtido? Preciso de um dispositivo de exibição. O mais simples é o Monitor Serial mas depois veremos o display de LCD.
Se você esta lembrado até agora só trabalhamos com entradas digitais que só podem ter dois valores : ou zero (LOW - 0V) ou um (HIGH - 5V). Mas você sabe que no mundo temos grandezas não digitais que podem assumir centenas de valores de um mínimo a um máximo.
Na primeira funcionalidade, ler a entrada analógica iremos ler a posição de um potenciometro. Isto será possível porque iremos conectar os extremos do potenciometro a GND e +5V e o pino central iremos ligar a entrada analógica. Portanto, teremos de 0 a 5V na entrada análógica.
Portanto, para esta experiência você precisará de um potenciometro ou resistor variável. Se você tiver um potenciometro multivoltas vai conseguir visualizar melhor a escala de 10 bits mas um potenciometro comum serve. Eu aconselho a colocar um resistor de 1k entre o potenciometro e a entrada analógica do Arduino (para evitar acidentes - detesto enviar GND ou +5V direto num pino de entrada de um integrado) mas é opcional.
O arduino tem 6 portas analógicas chamadas de AD0 a AD5. Note a notação diferente, D0 a D13 são as portas Digitais.
O conversor analógico do arduino tem conversores análogo-digitais de 10 bits o que faz com que ele consiga
diferenciar 1024 níveis nas suas portas analógicas sendo que 0 significa 0V e 1023 significa 5V.
Isso significa que o Arduino consegue trabalhar com 'degraus' de perto de 5 mV (dividindo 5V por 1024 dá
4,152823920265781 mV), ou seja, consegue 'sentir' variações da ordem de 5 mV.
Um segredo da leitura da porta analógica é que ela é bem mais lerda que a leitura da porta serial. Então se você pretende ler 10.000 por segundo está usando o arduino no talo e dificilmente conseguirá realizar esta tarefa se houver algum processamento mais pesado ou demorado. A documentação do arduino ( veja Analog Read) ela afirma que o arduino demora 100ms para fazer uma leitura das portas analógicas. Isto praticamente nos obriga a colocar um delay de 100 ms entre cada leitura do arduino.
Como as coisas são bem preparadas no arduino, para você enviar ou receber dados pela serial terá que fazer o seguinte :
1-Não precisa de biblioteca externa.
2-Na função setup informe a velocidade da comunicação serial : Exemplo : Serial.begin(9600);
3-As funções Serial.print e Serial.println enviam dados pela serial. A função Serial.println acrescenta um CRLF (mudança de parágrafo) após enviar os dados que você postou para serem enviados.
Esquema :
Programa :
/*
AnalogReadSerial
Lê a porta A0 e exibe o resultado no monitor serial.
Instale um Potenciometro ou trimpot +5V, GND e o Pino Central no A0 .
*/
void setup() {
Serial.begin(9600); // inicializa a porta serial para 9600 bps:
}
// loop eterno :
void loop() {
int sensorValue = analogRead(A0); // le a entrada analógica do pino 0
Serial.println(sensorValue); //exibe o resultado lido
delay(100); // delay de 100 mili-segundo para efeitos de estabilidade / tempo leitura.
}
Pelo monitor serial e variando o potenciometro podemos constatar que a leitura varia de 0 a 1023 que significa 0 a 5V.